
/**
 * 对函数进行节流操作，限制函数的执行频率
 * @param {Function} fn - 需要节流的函数
 * @param {number} delay - 最大时间间隔，单位为毫秒
 * @param {boolean} isImmediate - 是否使用前缘节流，默认为 true
 * @returns {Function} - 返回节流后的函数
 */
export default function throttle(fn, delay = 60, isImmediate = true) {
    // isImmediate 为 true 时使用前缘节流，首次触发会立即执行，为 false 时使用延迟节流，首次触发不会立即执行
    let last = Date.now();
    return function () {
        let now = Date.now();
        if (isImmediate) {
            fn.apply(this, arguments);
            isImmediate = false;
            last = now;
        }
        if (now - last >= delay) {
            fn.apply(this, arguments);
            last = now;
        }
    }
}
